using System;
using System.Collections.Generic;
using System.Text;
using Cavendish.ParticleLibrary.Sdk.Interactions;
using Cavendish.ParticleLibrary.Sdk.Abstractions;

namespace Cavendish.ParticleLibrary.Sdk
{
	/// <summary>
	/// A hadron, in particle physics, is any strongly interacting composite subatomic particle. 
	/// All hadrons are composed of quarks. 
	/// </summary>
	public class Hadron : ParticleClass
	{

		#region Quantum numbers

		public virtual int Strangeness
		{
			get
			{
				throw new ParticleImplementationException();
			}
		}

		public virtual int Charm
		{
			get
			{
				return 0;
			}
		}

		public virtual int Bottomness
		{
			get
			{
				return 0;
			}
		}


		#endregion Quantum numbers

		/// <summary>
		/// Makeup tells which quarks composes particle
		/// </summary>
		/// <example>
		/// uud means two up quarks and one down quark. This will create one Proton.
		/// Neutron is ddu.
		/// </example>
		public virtual string Makeup
		{
			get
			{
				return "";
			}
		}

		public override double Spin
		{
			get
			{
				return 0;
			}
		}

	}
}
